package com.atmosphere.interfaces;

import com.jme.scene.Node;

/**
 * <code>IComponent</code> defines the interface of an individual
 * atmosphere component unit. It defines a particular feature of
 * the entire atmosphere system and is responsible for providing
 * the detailed update and render logic.
 *
 * @author Yi Wang (Neakor)
 * @version Creation date: 05-19-2009 14:51 EST
 * @version Modified date: 05-21-2009 11:22 EST
 */
public interface IComponent {

	/**
	 * Initialize the component.
	 * @param parent The parent <code>Node</code>.
	 * @param atmosphere The <code>IAtmosphere</code> instance.
	 */
	public void initialize(Node parent, IAtmosphere atmosphere);
	
	/**
	 * Update the component with given interpolation.
	 * @param interpolation The <code>Float</code> time interpolation.
	 */
	public void update(float interpolation);

	/**
	 * Retrieve the component key.
	 * @return The <code>IComponentKey</code>.
	 */
	public IComponentKey getKey();
	
	/**
	 * Clean up the component.
	 */
	public void cleanup();
}
